package pincipal.pack;

import java.util.ArrayList;

import org.htmlparser.util.NodeList;

import database.Consulta;
import database.Parseador;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Configuraciones extends Activity {
	
	ListView listView;
	ArrayList<String> arrayConfiguraciones = new ArrayList<String>();
	AdaptadorConfiguraciones adaptador;
	private ProgressDialog pd = null;
	private Button volverMenuPrincipal;
	String valorUF = ""; 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature( Window.FEATURE_NO_TITLE );
		setContentView(R.layout.configuraciones);
		getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
		
		arrayConfiguraciones.add(arrayConfiguraciones.size(), "Importar Materiales desde archivo Excel");
		arrayConfiguraciones.add(arrayConfiguraciones.size(), "Importar Partidas desde archivo Excel");
		arrayConfiguraciones.add(arrayConfiguraciones.size(), "Obtener Valor U.F.");
		arrayConfiguraciones.add(arrayConfiguraciones.size(), "Editar Valor U.F.");
		
		
		adaptador = new AdaptadorConfiguraciones(this);
		listView = (ListView)findViewById(R.id.listConfig);
		listView.setAdapter(adaptador);
		
		this.volverMenuPrincipal = (Button)findViewById(R.id.menuPrincipal);
		this.volverMenuPrincipal.setBackgroundResource(R.drawable.home);
		
		listView.setOnItemClickListener(new OnItemClickListener()
		{

			public void onItemClick(AdapterView<?> arg0, View arg1, int position,
					long arg3) {
				switch (position) {
				case 0:
					Intent intent = new Intent(Configuraciones.this, CargarMaterialesExcel.class);
					startActivity(intent);
					break;
				case 1:
					if (Consulta.consultMateriales(Configuraciones.this).getCount()> 0)
					{
						Intent intent1 = new Intent(Configuraciones.this, CargarPartidasExcel.class);
						startActivity(intent1);
						
					}
					else
					{
						Toast.makeText(Configuraciones.this, "Debe importar Materiales", Toast.LENGTH_SHORT).show();
					}
					
					break;
									
				case 2:
					llamarDialog();
					break;
				
				case 3:
					dialogoUF();
					break;
				default:
					break;
				}
			}
			
		});

		this.volverMenuPrincipal.setOnClickListener( new OnClickListener()
        {
        	public void onClick(View v)
        	{
        		Intent intent = new Intent(Configuraciones.this, CubicMagic.class);
        		startActivity(intent);
        	}
        	
        });
		
	}

	public class AdaptadorConfiguraciones extends ArrayAdapter<String>

	{

		Activity context;
		public AdaptadorConfiguraciones(Activity context) {
			super(context, R.layout.list_item_configuraciones, arrayConfiguraciones);
			this.context = context;
			
		}
		
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			
			LayoutInflater inflater = context.getLayoutInflater();
			
			View item = inflater.inflate(R.layout.list_item_configuraciones, null);
			
			ImageView icono = (ImageView)item.findViewById(R.id.iconoConfig);
			TextView tituloOpcion = (TextView)item.findViewById(R.id.tituloConfig);
			switch (position) {
			case 0:
				icono.setImageResource(R.drawable.icono_materiales);
				tituloOpcion.setText(arrayConfiguraciones.get(position));
				
				break;

			case 1:
				icono.setImageResource(R.drawable.icono_partidas);
				tituloOpcion.setText(arrayConfiguraciones.get(position));
				break;
				
			case 2:
				icono.setImageResource(R.drawable.icono_presupuesto);
				tituloOpcion.setText(arrayConfiguraciones.get(position));
				break;
//				
			case 3:
				icono.setImageResource(android.R.drawable.ic_menu_edit);
				tituloOpcion.setText(arrayConfiguraciones.get(position));
				break;
			default:
				break;
			}
			return item;
		}
		
		
		
	}


	private void dialogoUF()
	{
		AlertDialog.Builder dialogo = new Builder(this);
		
		final EditText campoUF = new EditText(this);
		campoUF.setText(valorUF());
		campoUF.setInputType(InputType.TYPE_CLASS_NUMBER);
		dialogo.setIcon(android.R.drawable.ic_menu_edit);
		dialogo.setTitle("Editar UF");
		dialogo.setView(campoUF);
		
		dialogo.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
			
			public void onClick(DialogInterface arg0, int arg1) {
				Consulta.editUF(Configuraciones.this, "uf", campoUF.getText().toString());
			}
		});
		
		dialogo.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
			
			public void onClick(DialogInterface arg0, int arg1) {
				
			}
		});
		
		dialogo.create();
		dialogo.show();
	}

	private String valorUF()
	{
		Cursor uf = Consulta.consultUF(this, "uf");
		if ( uf.moveToFirst())
		{
			Consulta.editUF(this, "uf", uf.getString(1));
			return uf.getString(1);
		}
		return "";
	}
	
	private void llamarDialog()
	{
		pd = ProgressDialog.show(this, "Obteniendo U.F.", "Por favor espere...", true, false);
		new DownloadTask().execute("Parametros que necesite el DownloadTask");
	}

	private class DownloadTask extends AsyncTask<String, Void, Object> {
        protected String doInBackground(String... args) {
            valorUF = Parseador.parsearUF(Configuraciones.this);
            return "Datos ya procesados (resultado)";
        }

        protected void onPostExecute(Object result) {
            Toast.makeText(Configuraciones.this, "Valor UF de hoy: $" + valorUF, Toast.LENGTH_SHORT).show();
            if (Configuraciones.this.pd != null) {
            	Configuraciones.this.pd.dismiss();
            }
        }
   }
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event)
	{
		if ((keyCode == KeyEvent.KEYCODE_BACK))
		{
		    Intent intent = new Intent(this, CubicMagic.class);
			startActivity(intent);
			return true;	
		}
	
			return super.onKeyDown(keyCode, event);
	}
}
